//package cn.handong.tool.gui;
//
//import javax.swing.*;
//import java.awt.*;
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
//import java.awt.event.KeyEvent;
//import java.awt.event.KeyListener;
//import java.net.URL;
//import java.util.LinkedList;
//import java.util.Objects;
//import java.util.Queue;
//
//public class BfsGui {
//    public static void main(String[] args) {
//
//    }
//}
//
//
//// 用面板制作游戏界面
//class BfsPanel{
//    String[][] maze = {{".",".",".",".",".",".","."},
//                       {".","*",".","*",".",".","."},
//                       {".","*",".","*",".",".","."},
//                       {".","*","*","*",".",".","."},
//                       {".",".",".",".","*",".","."}};
//    String dir = "R";// 蛇头方向:R：向右，D:向下，L：向左，U：向上
//    Queue<BfsNode> queue = new LinkedList<>();
//
//    boolean flag = false;
//    static int[] X = {0,0,1,-1};
//    static int[] Y = {1,-1,0,0};
//    static String[][] a;
//    static int n;
//    static int m;
//    static int res = 0;
//    static BfsNode S = new BfsNode();
//    static BfsNode T = new BfsNode();
//
//
//    // 初始化游戏数据
//    public void Init() {
//        dir = "R";// 初始化蛇头方向向右
//        flag = false;
//        S.x = 2;
//        S.y = 2;
//        T.x = 4;
//        T.y = 3;
//        queue.offer(S);
////        a = maze;
//        a = new String[m][n];
//        n = maze.length;
//        m = maze[0].length;
//        for (int i = 0; i < a.length; i++) {
//            System.arraycopy(maze[i], 0, a[i], 0, a[0].length);
//        }
//    }
//
//    // 画面板
//    protected void paintComponent() {
//        if (Objects.equals(dir, "T")){
//            if (queue.isEmpty()){
//                return;
//            }
//            int size = queue.size();
//            for (int i = 0; i < size; i++) {
//                BfsNode node = queue.poll();
//                if (node.x == T.x && node.y == T.y){
//                    return;
//                }
//                for (int j = 0; j < 4; j++) {
//                    int newX = node.x + X[j];
//                    int newY = node.y + Y[j];
//                    if (newX >= 0 && newX < n && newY >= 0 && newY < m && Objects.equals(a[newX][newY], ".")){
//                        BfsNode newNode = new BfsNode();
//                        newNode.x = newX;
//                        newNode.y = newY;
//                        queue.offer(newNode);
//                        maze[newX][newY] = flag ? "r" : "g";
//                        a[newX][newY] = "*";
//                    }
//                }
//            }
//            res++;
//            flag = !flag;
//        }
//    }
//}